'\" te
'\"! tbl|eqn | mmdoc
'\"macro stdmacro
.ds Vn Version 1.2
.ds Dt 24 September 1999
.ds Re Release 1.2.1
.ds Dp Jan 14 18:30
.ds Dm 01 normal.gl
.ds Xs 22982 4 normal.gl
.TH GLNORMAL 3G
.SH NAME
.B "glNormal3b, glNormal3d, glNormal3f, glNormal3i, glNormal3s, glNormal3bv, glNormal3dv, glNormal3fv, glNormal3iv, glNormal3sv
\- set the current normal vector

.EQ
delim $$
.EN
.SH C SPECIFICATION
void \f3glNormal3b\fP(
GLbyte \fInx\fP,
.nf
.ta \w'\f3void \fPglNormal3b( 'u
	GLbyte \fIny\fP,
	GLbyte \fInz\fP )
.fi
void \f3glNormal3d\fP(
GLdouble \fInx\fP,
.nf
.ta \w'\f3void \fPglNormal3d( 'u
	GLdouble \fIny\fP,
	GLdouble \fInz\fP )
.fi
void \f3glNormal3f\fP(
GLfloat \fInx\fP,
.nf
.ta \w'\f3void \fPglNormal3f( 'u
	GLfloat \fIny\fP,
	GLfloat \fInz\fP )
.fi
void \f3glNormal3i\fP(
GLint \fInx\fP,
.nf
.ta \w'\f3void \fPglNormal3i( 'u
	GLint \fIny\fP,
	GLint \fInz\fP )
.fi
void \f3glNormal3s\fP(
GLshort \fInx\fP,
.nf
.ta \w'\f3void \fPglNormal3s( 'u
	GLshort \fIny\fP,
	GLshort \fInz\fP )
.fi

.SH PARAMETERS
.TP \w'\f2nx\fP\ \f2ny\fP\ \f2nz\fP\ \ 'u 
\f2nx\fP, \f2ny\fP, \f2nz\fP
Specify the $x$, $y$, and $z$ coordinates of the new current normal.
The initial value of the current normal is the unit vector, (0, 0, 1).
.P
.SH C SPECIFICATION
void \f3glNormal3bv\fP(
const GLbyte \fI*v\fP )
.nf
.fi
void \f3glNormal3dv\fP(
const GLdouble \fI*v\fP )
.nf
.fi
void \f3glNormal3fv\fP(
const GLfloat \fI*v\fP )
.nf
.fi
void \f3glNormal3iv\fP(
const GLint \fI*v\fP )
.nf
.fi
void \f3glNormal3sv\fP(
const GLshort \fI*v\fP )
.nf
.fi

.SH PARAMETERS
.TP
\f2v\fP
Specifies a pointer to an array of three elements:
the $x$, $y$, and $z$ coordinates of the new current normal.
.P
.SH DESCRIPTION
The current normal is set to the given coordinates
whenever \%\f3glNormal\fP is issued.
Byte, short, or integer arguments are converted to floating-point
 with a linear mapping that maps the most positive representable integer
value to 1.0,
and the most negative representable integer value to \-1.0.
.P
Normals specified with \%\f3glNormal\fP need not have unit length.
If \%\f3GL_NORMALIZE\fP is enabled,
then normals of any length specified with \%\f3glNormal\fP are normalized after transformation.
If \%\f3GL_RESCALE_NORMAL\fP is enabled, normals are scaled by a scaling factor
derived from the modelview matrix.  \%\f3GL_RESCALE_NORMAL\fP requires that the
originally specified normals were of unit length, and that the modelview
matrix contain only uniform scales for proper results.
To enable and disable normalization, call \%\f3glEnable\fP and \%\f3glDisable\fP
with either \%\f3GL_NORMALIZE\fP or \%\f3GL_RESCALE_NORMAL\fP.
Normalization is initially disabled.
.SH NOTES
The current normal can be updated at any time.
In particular, \%\f3glNormal\fP can be called between a call to \%\f3glBegin\fP and
the corresponding call to \%\f3glEnd\fP.
.SH ASSOCIATED GETS
\%\f3glGet\fP with argument \%\f3GL_CURRENT_NORMAL\fP
.br
\%\f3glIsEnabled\fP with argument \%\f3GL_NORMALIZE\fP
.br
\%\f3glIsEnabled\fP with argument \%\f3GL_RESCALE_NORMAL\fP
.SH SEE ALSO
\%\f3glBegin(3G)\fP,
\%\f3glColor(3G)\fP,
\%\f3glIndex(3G)\fP,
\%\f3glNormalPointer(3G)\fP,
\%\f3glTexCoord(3G)\fP,
\%\f3glVertex(3G)\fP
